// packageA/book/book.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        roomInfo: {
            name: '山居民宿-花满厅室',
            description: '3卧室·4床·可住5人',
            tips: '2号院2房包院'
        },
        formData: {
            name: '',
            datetime: [],
            number: 1,
            mobile: '',
            card_no: ''
        },
        showCalendarPopup: false,
        navHeight: wx.getStorageSync('navHeight') ? wx.getStorageSync('navHeight') : 88
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 可以从options中获取房间信息
        if (options.roomData) {
            try {
                const roomData = JSON.parse(decodeURIComponent(options.roomData));
                this.setData({
                    roomInfo: {
                        ...this.data.roomInfo,
                        ...roomData
                    }
                });
            } catch (e) {
                console.error('解析房间数据失败:', e);
            }
        }
    },

    // 表单输入处理
    onNameInput(e) {
        this.setData({
            'formData.name': e.detail.value
        });
    },

    onMobileInput(e) {
        this.setData({
            'formData.mobile': e.detail.value
        });
    },

    onCardInput(e) {
        this.setData({
            'formData.card_no': e.detail.value
        });
    },

    onGuestChange(e) {
        this.setData({
            'formData.number': e.detail.value
        });
    },

    // 日期选择相关
    showCalendar() {
        this.setData({
            showCalendarPopup: true
        });
    },
    onConfirmDate(event) {
        this.setData({
            'formData.datetime': this.formatDateFun(event.detail),
            showCalendarPopup: false
        });
    },
    formatDateFun(date) {
        let dateTime = new Date(date);
        return `${dateTime.getFullYear()}-${(dateTime.getMonth() + 1) < 10 ? '0' + (dateTime.getMonth() + 1) : dateTime.getMonth() + 1}-${dateTime.getDate() < 10 ? '0' + dateTime.getDate() : dateTime.getDate()}`;
    },

    // 去支付页面
    goToPayPage(){
        // 验证表单数据
        if (!this.validateForm()) {
            return;
        }

        // 构造订单数据
        const orderData = {
            roomName: this.data.roomInfo.name,
            hotelName: '山居民宿',
            checkInDate: this.data.formData.datetime[0] || '',
            checkOutDate: this.data.formData.datetime[1] || '',
            nights: this.calculateNights(),
            guests: this.data.formData.number,
            guestName: this.data.formData.name,
            guestMobile: this.data.formData.mobile,
            guestIdCard: this.data.formData.card_no,
            totalPrice: this.calculateTotalPrice(),
            roomPrice: 299, // 每晚价格
            serviceFee: 20, // 服务费
            cleaningFee: 30 // 清洁费
        };

        // 跳转到支付页面并传递订单数据
        wx.navigateTo({
            url: `/packageA/payPage/payPage?orderData=${encodeURIComponent(JSON.stringify(orderData))}`
        });
    },

    // 验证表单数据
    validateForm() {
        const { name, datetime, mobile, card_no } = this.data.formData;
        
        if (!name.trim()) {
            wx.showToast({
                title: '请输入姓名',
                icon: 'none'
            });
            return false;
        }
        
        if (!datetime || datetime.length < 2) {
            wx.showToast({
                title: '请选择入住和退房日期',
                icon: 'none'
            });
            return false;
        }
        
        if (!mobile.trim()) {
            wx.showToast({
                title: '请输入手机号',
                icon: 'none'
            });
            return false;
        }
        
        // 验证手机号格式
        const mobileReg = /^1[3-9]\d{9}$/;
        if (!mobileReg.test(mobile)) {
            wx.showToast({
                title: '请输入正确的手机号',
                icon: 'none'
            });
            return false;
        }
        
        if (!card_no.trim()) {
            wx.showToast({
                title: '请输入身份证号',
                icon: 'none'
            });
            return false;
        }
        
        // 验证身份证号格式
        const idCardReg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
        if (!idCardReg.test(card_no)) {
            wx.showToast({
                title: '请输入正确的身份证号',
                icon: 'none'
            });
            return false;
        }
        
        return true;
    },

    // 计算住宿天数
    calculateNights() {
        const { datetime } = this.data.formData;
        if (!datetime || datetime.length < 2) {
            return 0;
        }
        
        const checkIn = new Date(datetime[0]);
        const checkOut = new Date(datetime[1]);
        const timeDiff = checkOut.getTime() - checkIn.getTime();
        const nights = Math.ceil(timeDiff / (1000 * 3600 * 24));
        
        return nights > 0 ? nights : 0;
    },

    // 计算总价格
    calculateTotalPrice() {
        const nights = this.calculateNights();
        const roomPrice = 299; // 每晚价格
        const serviceFee = 20; // 服务费
        const cleaningFee = 30; // 清洁费
        
        return (roomPrice * nights) + serviceFee + cleaningFee;
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})